﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SISGEZATBZVisual.BusinessEntities;

namespace SISGEZATBZVisual.Repository
{
     public class AlumnoRepository:MasterRepository,IAlumnoRepository
    {


         public Alumno GetAlumnoByTipoDocumentoNroDocumento(string tipoDocumento, string nroDocumento)
         {
             var query = from a in Context.Alumnos
                         where a.NroDocumento.Equals(nroDocumento)
                         select a;

             query = from a in query
                     where a.TipoDeDocumento.Equals(tipoDocumento)
                     select a;

             return query.SingleOrDefault();

             //var query = Context.Alumnos.Where(h => h.TipoDeDocumento.Equals(tipoDocumento));

             //query = query.SingleOrDefault(c => c.NroDocumento.Equals(nroDocumento));
             //return query;
         }


         public void ActualizarAlumno(Alumno alumno)
         {
             Context.Entry(alumno).State = EntityState.Modified;
            Context.SaveChanges();
         }


         public void RegistrarAlumno(Alumno alumno)
         {
             Context.Alumnos.Add(alumno);
             Context.SaveChanges();
         }





         public IEnumerable<Alumno> GetAlumnos(string nombreAlumnoOapellido)
         {

         
                 var query = from a in Context.Alumnos
                             select a;

             if (!string.IsNullOrEmpty(nombreAlumnoOapellido))
             {
                  query = from a in query
                             where a.Nombres.Contains(nombreAlumnoOapellido) || a.Apellidos.Contains(nombreAlumnoOapellido)
                             select a;
             }


             return query;

         }


         public Alumno GetAlumnoById(int idAlumno)
         {
             return Context.Alumnos.SingleOrDefault(m => m.Id.Equals(idAlumno));
         }


         public void UpdateAlumno(Alumno alumno)
         {
             Context.Entry(alumno).State = EntityState.Modified;
             Context.SaveChanges();
             
              
             
         }
    }
}
